home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / progutil / stdwin.zoo / alfa / alfa.h next >
C/C++ Source or Header  |  1989-10-18  |  4KB  |  125 lines

  1. /* TERMCAP STDWIN -- INTERNAL HEADER FILE. */
  2.  
  3. /* BEWARE: CONFUSED COORDINATE CONVENTIONS.
  4.    The VTRM package, used here for terminal output,
  5.    puts the y coordinate first.
  6.    The stdwin package itself puts the x coordinate first
  7.    (but instead of (x, y), it uses (h, v)).
  8.    Also, when VTRM specifies a range of lines, the second number
  9.    is the last line included.  In stdwin, the second number is
  10.    the first position NOT included. */
  11.  
  12. #include "tools.h"
  13. #include "vtrm.h"
  14.  
  15. #define WINDOW struct window
  16.  
  17. #include "stdwin.h"
  18. #include "menu.h"
  19.  
  20. struct window {
  21.     short tag;        /* Window tag, usable as document id */
  22.     short open;        /* Set if this struct window is in use */
  23.     char *title;        /* Title string */
  24.     void (*drawproc)();    /* Draw procedure */
  25.     short top;        /* Top line on screen */
  26.     short bottom;        /* Bottom line on screen + 1 */
  27.     int offset;        /* Diff. between doc. and screen line no's */
  28.     int curh, curv;        /* Text cursor position (doc. coord.) */
  29.     TEXTATTR attr;        /* Text attributes */
  30.     struct menubar mbar;    /* Collection of local menus */
  31.     long timer;        /* Absolute timer value (see timer.c) */
  32. };
  33.  
  34. /* Note on the meaning of the 'offset' field:
  35.    to convert from screen coordinates to document coordinates: add offset;
  36.    from document coordinates to screen coordinates: subtract offset. */
  37.  
  38. /* Data structures describing windows. */
  39.  
  40. #define MAXWINDOWS    20
  41. #define MAXLINES    120
  42.  
  43. extern WINDOW winlist[MAXWINDOWS];
  44. extern char uptodate[MAXLINES];
  45. extern WINDOW *wasfront, *front, *syswin;
  46. extern int lines, columns;
  47. extern TEXTATTR wattr;
  48.  
  49. /* KEY MAPPING. */
  50.  
  51. /* The primary key map is a 256-entry array indexed by the first
  52.    character received.  Secondary key maps are lists terminated with a
  53.    type field containing SENTINEL.
  54.    The maps use the same data structure so they can be processed
  55.    by the same routine. */
  56.  
  57. struct keymap {
  58.     unsigned char key;    /* Character for which this entry holds */
  59.     unsigned char type;    /* Entry type */
  60.     unsigned char id;    /* Id and item of menu shortcut */
  61.     unsigned char item;    /* Also parameter for other types */
  62. };
  63.  
  64. /* Entry types: */
  65. #define ORDINARY    0    /* Report char as itself */
  66. #define SECONDARY    1    /* Proceed to secondary keymap [id] */
  67. #define SHORTCUT    2    /* Menu shortcut */
  68. #define SENTINEL    127    /* End of secondary key map */
  69.  
  70. extern struct keymap _wprimap[256];
  71. extern struct keymap **_wsecmap;
  72.  
  73. #define SECMAPSIZE 128
  74.  
  75. /* The system menu (menu id 0) has a few entries for window manipulation,
  76.    followed by entries corresponding to WE_COMMAND subcodes.
  77.    WC_CLOSE happens to be the first of those, and corresponds
  78.    with CLOSE_WIN. */
  79.  
  80. /* Item numbers in system menu: */
  81. #define PREV_WIN    0
  82. #define NEXT_WIN    1
  83. #define CLOSE_WIN    2
  84.  
  85. /* Offsets between WE_COMMAND subcodes and item numbers in system menu: */
  86. #define FIRST_CMD    (CLOSE_WIN - WC_CLOSE)
  87. #define LAST_CMD    99
  88.  
  89. /* There are also some codes that have a shortcut and a special interpretation
  90.    but no entry in the system menu: */
  91. #define SUSPEND_PROC    100
  92. #define REDRAW_SCREEN    101
  93. #define MOUSE_DOWN    102
  94. #define MOUSE_UP    104
  95. #define LITERAL_NEXT    105
  96.  
  97. #define MENU_CALL    127    /* Start interactive menu selection */
  98.  
  99. void wsyscommand();
  100. bool wsysevent();
  101. void wmenuselect();
  102. void wdrawtitle();
  103. void wupdate();
  104. void wflush();
  105. void wnewshortcuts();
  106. void wgoto();
  107. void _wselnext();
  108. void _wselprev();
  109. void _wredraw();
  110. void _wsuspend();
  111. void getbindings();
  112. void initsyswin();
  113. void drawmenubar(), drawlocalmenubar();
  114. void _wreshuffle();
  115. void _wnewtitle();
  116. void wsysdraw();
  117. void killmenubar();
  118. void initmenubar();
  119. void gettckeydefs();
  120. void getttykeydefs();
  121. void wsetmetakey();
  122. void menubarchanged();
  123. void menuselect();
  124. void _wlitnext();
  125.